package team.nine.kuaichezuche.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import team.nine.kuaichezuche.model.User;

/**
 * 用户数据访问接口，用于操作users表
 */
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    
    /**
     * 根据用户名查询用户
     * @param username 用户名
     * @return 用户对象，如果不存在则返回null
     */
    User findByUsername(String username);
    
    /**
     * 根据手机号查询用户
     * @param phone 手机号
     * @return 用户对象，如果不存在则返回null
     */
    User findByPhone(String phone);
    
    /**
     * 根据身份证号查询用户
     * @param idCard 身份证号
     * @return 用户对象，如果不存在则返回null
     */
    User findByIdCard(String idCard);
    
    /**
     * 检查用户名是否已存在
     * @param username 用户名
     * @return 如果存在返回true，否则返回false
     */
    boolean existsByUsername(String username);
    
    /**
     * 检查手机号是否已存在
     * @param phone 手机号
     * @return 如果存在返回true，否则返回false
     */
    boolean existsByPhone(String phone);
    
    /**
     * 检查身份证号是否已存在
     * @param idCard 身份证号
     * @return 如果存在返回true，否则返回false
     */
    boolean existsByIdCard(String idCard);
    
    /**
     * 根据令牌查询用户
     * @param token 用户令牌
     * @return 用户对象，如果不存在则返回null
     */
    User findByToken(String token);
}